www.gusucode.com > Delphi 列举进程及进程模块信息实例 > Delphi 监测磁盘容量及设置光驱自动运行\00301.txt
1:如何启动/关闭CD-ROM的自动运行 在Private声明部分说明一个SetCDAutoRun(AAutoRun:Boolean)用来设置是否让光盘自动运行,AAutoRun=True;自动运行;AAutoRun=False;不能自动运行。 SetCDAutoRun(AAutoRun:Boolean)的过程如下: Procedure TForm1.SetCDAutoRun(AAutoRun:Boolean); const DoAutoRun : array[Boolean] of Integer = (0,1); var Reg:TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.KeyExists('System\CurrentControlSet\Services\Class\CDROM') then if Reg.OpenKey('System\CurrentControlSet\Services\Class\CDROM',FALSE) then Reg.WriteBinaryData('AutoRun',DoAutoRun[AAutoRun],1); finally Reg.Free; end; MessageBox(handle,'你的设置在Windows重新启动后将生效','信息',MB_IconInformation+MB_OK); End ; 2:如何判断光驱中是否有光盘 function DiskInDrive(Drive: Char): Boolean; var ErrorMode: word; begin if Drive in ['a'..'z'] then Dec(Drive, $20); //make it upper case if not (Drive in ['A'..'Z']) then //make sure it's a letter raise EConvertError.Create('Not a valid drive ID'); //turn off critical errors ErrorMode :=SetErrorMode(SEM_FailCriticalErrors); try if DiskSize(Ord(Drive) - $40)=-1 then //drive 1=a, 2=b, 3=c, etc. Result :=False else Result :=True; finally SetErrorMode(ErrorMode); //restore old error mode End ; end; 如果函数返回值为真,说明有盘,否则说明没有。 3:如何打开和关闭计算机的光驱 要打开和关闭计算机的光驱,只要向MCI发送一条mciSendString指令即可,别忘了,在Uses里面加上mmsystem。程序代码如下: procedure TForm1.BitBtn1Click(Sender: TObject); begin mciSendString('Set cdaudio door open wait', nil, 0, handle); //打开光驱 end; procedure TForm1.BitBtn2Click(Sender: TObject); begin mciSendString('Set cdaudio door closed wait', nil, 0, handle); //关闭光驱 end; 4:获得磁盘的类型 Function GetDiskType(Disk : Char) : String ; var x:integer; driver:pchar; TempStr : String ; begin driver:=Pchar(Disk+':\'); //要显示的驱动器名 x := GetDriveType(driver); Case x of 2: Result := '该驱动器是可移动驱动器'; 3: Result := '该驱动器是固定驱动器'; 4: Result := '该驱动器是网络驱动器'; 5: Result := '该驱动器是CD-ROM驱动器'; 6: Result := '该驱动器是虚拟驱动器'; Else Result := '该驱动器无效'; End; end; 5:获得磁盘的容量 Function GetDiskLarge(Disk : Char) : String; var driver:pchar; sec1, byt1, cl1, cl2:longword; begin driver:=PChar(Disk+':\'); //要显示的驱动器名 GetDiskFreeSpace(driver, sec1, byt1, cl1, cl2); cl1 := cl1 * sec1 * byt1; cl2 := cl2 * sec1 * byt1; Result := '该驱动器总共容量' + Formatfloat('###,##0',cl2) + '字节' +#13+#13+ '该驱动器可用容量' + Formatfloat('###,##0',cl1) + '字节' ; end;